# constructProj/jsonConfig.py
# -*-coding:utf-8 -*-
# @file       jsonConfig.py
# @author     yearnext
# @version    1.0.0
# @date       2021-11-19
# @brief      constructProj jsonConfig.py component
import os
import sys
import traceback
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtSerialPort import *
from moudles.ui.SerialInfo import uiSerialInfo
from moudles.tool import tTime, tLog


class SerialInfoWidget(QtWidgets.QWidget, uiSerialInfo):
    def __init__(self, argv, parent=None):
        super().__init__(parent)

        # UI初始化
        self.uiInit()

        # 输入参数初始化
        self.inputParamInit(argv)

        # 信号槽初始化
        self.signalSoltInit()

    # UI初始化
    def uiInit(self):
        # UI 初始化
        self.setupUi(self)
        self.infoDisconnect()

    # 输入参数初始化
    def inputParamInit(self, argv):
        tLog.putFuncArg(argv)
        # print('input arg:', argv)

    def signalSoltInit(self):
        # print('signal solt init')

        self.sendCnt = 0
        self.recvCnt = 0

        self.timeTimer = QTimer(self)
        self.timeTimer.timeout.connect(self.showTime)
        self.timeTimer.start(1000)

    # 刷新时间显示
    def showTime(self):
        # print(tTime.getCurTime())
        self.timeLabel.setText(tTime.getCurTime())

    ####################################################################################################################
    # 设置收发状态
    ####################################################################################################################
    def setTxStatus(self, status):
        if status == 1:
            self.txStatus.setOn()
        else:
            self.txStatus.setOff()

    def setRxStatus(self, status):
        if status == 1:
            self.rxStatus.setOn()
        else:
            self.rxStatus.setOff()

    def setRecvTips(self):
        self.rxStatus.blink(50, 50, 1)

    ####################################################################################################################
    # 设置收发计数
    ####################################################################################################################
    def setTxCnt(self, cnt):
        self.sendCnt = cnt
        self.txCnt.setText(str(self.sendCnt))

    def addTxCnt(self, cnt):
        self.sendCnt += cnt
        self.txCnt.setText(str(self.sendCnt))

    def setRxCnt(self, cnt):
        self.recvCnt = cnt
        self.rxCnt.setText(str(self.recvCnt))

    def addRxCnt(self, cnt):
        self.recvCnt += cnt
        self.rxCnt.setText(str(self.recvCnt))

    ####################################################################################################################
    # 更新设备连接状态
    ####################################################################################################################
    def setConnectState(self, status):
        self.connectState.setText(u'已连接' if (status) else u'连接断开')

    ####################################################################################################################
    # 更新设备连接状态
    ####################################################################################################################
    def setPortName(self, name=None):
        self.lodState.setText(u'未设置端口' if (name is None) else name)

    ####################################################################################################################
    # 清除收发信息
    ####################################################################################################################
    def clearInfo(self):
        self.setTxCnt(0)
        self.setRxCnt(0)

        self.setTxStatus(0)
        self.setRxStatus(0)

    def clearTransferCount(self):
        self.setTxCnt(0)
        self.setRxCnt(0)

    def infoDisconnect(self):
        self.clearInfo()
        self.setConnectState(0)

# if __name__ == '__main__':
#     app = QtWidgets.QApplication(sys.argv)
#     window = SerialInfoWidget(sys.argv)
#     window.show()
#     sys.exit(app.exec_())